ansi2knr recognizes functions by seeing a non-keyword identifier at the left margin, followed by a left parenthesis, with a right parenthesis as the last character on the line. It will recognize a multi-line header if the last character on each line but the last is a left parenthesis or comma. These algorithms ignore whitespace and comments, except that the function name must be the first thing on the line.
The following constructs will confuse it:
- Any other construct that starts at the left margin and follows the above syntax (such as a macro or function call).
- Macros that tinker with the syntax of the function header.